更加灵活的利用循环
我们刚才讲了,如何使用 C 语言中的两种循环语句,For循环
和do...while循环
,那么这些循环能否像if...else...语句
一样能够彼此嵌套呢?答案是肯定到,循环也可以进行嵌套,并且通过嵌套,我们可以更加灵活的使用循环的各种特点。当然了,我们甚至也可以改变循环的执行状态,让循环在我们需要的时候跳出。
几种循环的比较
首先我们先看看几种循环的比较,找到这些循环的特点。
1、三种循环的运行机制都差不多,计次、执行循环体、增量变量,所以可以相互替换使用。
2、while 循环
和do...while循环
都是在 while 后面的括号中增加判断条件,来判断是否执行下一轮循环,所以在循环体中,要对这个判断条件施加一些设定,让循环能够及时的退出。
3、凡是用 while 循环写的,都可以用 for 循环实现。
4、while 循环
、do...while循环
和for 循环
都可以使用 break 语句跳出循环,使用 continue 语句结束本次循环。(这两个语句详见下方)
循环的嵌套
在一个循环体内
,包含另一个完整的循环体
,这就是循环的嵌套
了。
循环嵌套举例
while 循环
、do...while循环
以及for 循环
三者彼此之间都可以进行嵌套
。
while 里可以是:while、do…while、for;
do…while 里可以是:while、do…while、for;
for 里可以是:while、do…while、for;
所以我们所有学过的循环都可以进行嵌套。我们利用嵌套的方式,编写一个九九乘法表
。
1 |
|
我们看到,利用嵌套可以更加灵活的使用循环,但是如何能够在我们需要的时候跳出循环呢?
break 语句提前终止循环
break 语句是控制循环执行状态的终止语句,break 语句可以用来从循环体内跳出循环体,即提前结束当前循环,执行下面的语句。
举例说明
问题
每个人往盒子里放米粒,第一个人放1粒米,第二个人放2粒米…以此类推,一共100个人,直到盒子里有200粒米的时候,就停止放米,这样一共需要多少人?
思路
我们利用循环和 break 跳出,循环次数是100,跳出条件是盒子里的米粒等于200。
1 |
|
运行结果是
1 | 1个人,1 粒米 |
使用
本来for 循环
要执行100次
的,但是我们在循环体中增加了判断循环跳出的条件,如果条件满足,则马上跳出,不管循环了多少次,如果条件不满足,那么循环100次后也会跳出,所以,利用循环体内的 break,我们可以更灵活的使用循环。
注意
break 语句,只能在 switch 语句和循环语句中使用,不能单独使用。
continue 语句提前结束本次循环
注意,我们不是要跳出循环,而是结束本次循环,结束后接着进行下一次循环。
举例说明
问题
找出1~100之间,能被2和3整除的数,并且输出。
思路
我们需要遍历1~100,然后对每个数进行判断,如何复合要求,那么我们就执行输出,如果不符合要求,就跳过该次循环。
1 |
|
解释
首先利用 for 循环遍历了1~100的所有数,在循环体中,增加if 判断,如果满足条件的,则输出,不满足的则跳过该循环。
break 和 continue 的区别
最大的区别就是 break 是跳出循环体,而 continue 是跳出循环体内的这次循环。
嵌套循环的 break?
如果是嵌套循环,在内循环里面增加了 break,那么执行 break 后,程序会结束内循环还是内外循环都结束呢?
举例
1 | int main(){ |
从上面的例子不难看出,每次需要换行的时候,都执行了 break,这样循环跳出到了外面的大循环,执行了外面的\n
然后继续进入下一次循环。
所以,break 和 continue
都是仅在当前的循环体内有效
。
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。